#ifndef __SHAPE_BUILDER_H__
#define __DOMAIN_BUILDER_H__

#include <string>
#include <vector>
#include "Shape.h"
#include "Texture.h"
#include "Square.h"
#include "Circle.h"
#include "Rectangle.h"
#include "Triangle.h"
#include "Segment.h"
#include "Document.h"
#include "Settings.h"

using namespace std;

class DomainBuilder  
{
private:
	static DomainBuilder* singleton; 
	DomainBuilder();
	Shape* buildShapeFromElement(Element* elem);
	Texture* buildTextureFromElement(Element* elem);

public:
	virtual ~DomainBuilder();
	static DomainBuilder* getInstance(); 

	Settings* buildSettingsFromDocument(Document* doc);

	vector<Shape*> buildShapesFromDocument(Document* doc);

	vector<Texture*> buildTexturesFromDocument(Document* doc);

};

#endif
